package com.macro.mall.dao;

import com.macro.model.UmsAdminRoleRelation;
import com.macro.model.UmsPermission;
import com.macro.model.UmsResource;
import com.macro.model.UmsRole;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *  用户和角色的Dao
 */
public interface UmsAdminRoleRelationDao {

    /**
     * 批量插入用户角色关系
     * 给用户分配角色  ums_admin_role_relation
     */
    int insertList(@Param("list") List<UmsAdminRoleRelation> adminRoleRelationList);

    /**
     *  获取用户的所有角色
     *   把 role表和 admin_role 进行关联查询(根据roleId)
     */
    List<UmsRole> getRoleList(@Param("adminId") Long adminId);

    /**
     * 获取用户所有角色权限
     *  把admin_role,role_permission,permission 进行关联查询,返回permission的全部数据
     *  封装成Permission对象
     */
    List<UmsPermission> getRolePermissionList(@Param("adminId") Long adminId);


    /**
     * 获取用户的所有权限（包括+-权限）
     * 把admin_role,role_permission,permission 进行关联查询
     * 减去 ums_admin_permission_relation中type为-1的，
     * 加上 type为1的
     */
    List<UmsPermission> getPermissionList(@Param("adminId") Long adminId);


    /**
     * 获取用户所有可访问资源
     *  把 admin_role，role_resource,resource 进行关联查询，把返回的 resource
     *  封装成Resource对象
     */
    List<UmsResource> getResourceList(@Param("adminId") Long adminId);

    /**
     *  获取资源相关的用户列表
     *   把 admin_role,role_resource和 resource 进行关联查询,返回用户的id集合
     */
    List<Long> getAdminList(Long resourceId);

}
